package org.blog.utils;

import cn.hutool.core.util.IdUtil;

/**
 * id生成工具类，二次封装hutool
 */
public class IdUtils {

    /**
     * 机器id 在雪花算法中，workerId 通常占用5位，最多可以有 2^5 = 32台机器
     */
    public static final long WORKER_ID = 39;

    /**
     * 数据中心id 通常占用5位，最多可以有 2^5 = 32个数据中心
     */
    public static final long DATACENTER_ID = 15;

    /**
     * 生成雪花id（雪花id可在分布式系统中生成唯一的id）
     * 雪花id用户数据库表主键
     * @return
     */
    public static String getStringSnowflakeId() {
        return IdUtil.getSnowflake(WORKER_ID, DATACENTER_ID).nextIdStr();
    }

    /**
     * 生成uuid 带4个 "-"，长度36位
     * 如：5c0ced41-e2f2-4a61-a99a-6f96391bd098
     * @return
     */
    public static String getRandomUUID() {
        return IdUtil.randomUUID();
    }

    /**
     * 生成uuid，长度32位
     * 如：aa3d07baa7614d13bfe1c9aa7465a8c5
     * @return
     */
    public static String getSimpleUUID() {
        return IdUtil.simpleUUID();
    }
}
